package com.srwl.mytx.service;


import com.srwl.mytx.domain.CommonResult;

import java.util.Map;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;

/**
 * Created by dahai2070 on 2018/7/4 0004.
 */

public interface TopicService {

    /**
     * 创建主题，因为ES 里面称：index ,所以沿用
     *
     * @return
     */
    @POST("/es/index")
    // @Headers("Encrypt:0")//不加密
    Call<CommonResult> index(@Body Object body);

    @POST("/es/get")
        // @Headers("Encrypt:0")
    Call<CommonResult> get(@Body Object body);

    /**
     * 从es 中查询主题信息，查询点赞数量和我是否点赞，如果是悬赏类型主题，查询我是否领取了悬赏
     * es中携带了红包信息
     *
     * @param body topicId
     * @return
     */
    @POST("/es/get_v0")
    Call<CommonResult> getTopicFromES(@Body Object body);

    @POST("/es/get_v1")
    Call<CommonResult> getTopicFromMysql(@Body Object body);

    @GET("/es/get_v2/{topicId}")
    Call<CommonResult> getTopicFromMysql_v2(@Path("topicId") String topicId);

    @POST("/es/get_v3")
    Call<CommonResult> getTopicFromMysql_v3(@Body String topicId);

    @POST("/es/update")
    Call<CommonResult> update(@Body Object info);

    @POST("/es/update_v1")
    Call<CommonResult> updateRewardTopic(@Body Object info);

    @POST("/es/update_v2")
    Call<CommonResult> updateLiveRoomTopic(@Body Object info);


    @Deprecated
    @POST("/es/delete")
    Call<CommonResult> delete(@Body Object info);

    /**
     * 根据主题 id 删除主题，后端做更新状态操作
     *
     * @param info 主题id
     * @return
     */
    @POST("/es/delete_v1")
    Call<CommonResult> delete_v1(@Body Object info);


    @POST("/es/search")
    Call<CommonResult> search(@Body Map<String, Object> info);

    /**
     * 查询热点数据，并更新用户位置，用户周边消息的推送
     * 登录进入 mapFragment 定位成功后自动搜索一次
     * 返回周边的热点主题或者新主题
     *
     * @param info
     * @return
     */
    @POST("/es/autoSearch")
    Call<CommonResult> autoSearch(@Body Map<String, Object> info);

    @POST("/es/nearbySearch")
    Call<CommonResult> nearbySearch(@Body Map<String, Object> info);

    @POST("/es/nearbySearch_v1")
    Call<CommonResult> boundingBoxNearbySearch(@Body Object object);

    @POST("/es/nearbySearch_v2")
    Call<CommonResult> polygonNearbySearch(@Body Object object);


    /**
     * 查全部
     *
     * @param info
     * @return
     */
    @Headers("Encrypt:0")
    @POST("/es/matchAll")
    Call<CommonResult> matchAll(@Body Map<String, Object> info);

    /**
     * 查个人发布的主题
     *
     * @param info
     * @return
     */


    @POST("/es/searchByUid")
    Call<CommonResult> searchByUid(@Body Map<String, Object> info);

    /**
     * 根据用户Id,在mysql 中查询个人发布的topic
     *
     * @param info
     * @return
     */
    // @Headers("Encrypt:0")
    @POST("/es/getTopicByUid")
    Call<CommonResult> getTopicByUid(@Body Map<String, Object> info);

    /**
     * 举报主题
     *
     * @param body
     * @return
     */
    @POST("/es/accusationTopic")
    Call<CommonResult> accusationTopic(@Body Object body);

    /**
     * 取消悬赏任务
     *
     * @param body
     * @return
     */
    @POST("/es/revokeReward")
    Call<CommonResult> revokeReward(@Body Object body);



    @POST("/es/check_create_authority")
    Call<CommonResult> checkAuthorityCreateLiveRoom(@Body Object body);

    @POST("/es/publish_v1")
    Call<CommonResult> publishLiveRoomTopic(@Body Object body);


    @POST("/es/searchLiveRoom")
    Call<CommonResult> searchLiveRoom(@Body Object body);

    @POST("/es/queryMyFile")
    Call<CommonResult> queryMyFile(@Body Object body);

    @POST("/es/offerToTopic")
    Call<CommonResult> offerToTopic(@Body Object body);

    @POST("/es/queryTopicOffer")
    Call<CommonResult> queryTopicOffer(@Body Object body);


    /**
     * 查询热点数据
     *
     * @param body
     * @return
     */
    @POST("/es/queryHottestTopic")
    Call<CommonResult> queryHottestTopic(@Body Object body);

    @POST("/es/rewardTopicDelete")
    Call<CommonResult> rewardTopicDelete(@Body Object body);

    /**
     * 放弃做管理员
     *
     * @param body
     * @return
     */
    @POST("/es/giveUpManager")
    Call<CommonResult> giveUpManager(@Body Object body);


    /**
     * 申请成为管理员
     *
     * @param body
     * @return
     */
    @POST("/es/applyForManager")
    Call<CommonResult> applyForManager(@Body Object body);


    /**
     * 请求管理权限移交
     *
     * @param body
     * @return
     */
    @POST("/es/transfer_authority")
    Call<CommonResult> applyTopicAuthorityTransfer(@Body Object body);

    /**
     * 接受权限
     * 成为管理员
     *
     * @param body
     * @return
     */
    @POST("/es/accept_authority")
    Call<CommonResult> acceptTopicAuthorityTransfer(@Body Object body);

    /**
     * 让度管理操作
     *
     * @param body
     * @return
     */
    @POST("/es/surrenderMangerTopic")
    Call<CommonResult> surrenderMangerTopic(@Body Object body);

    /**
     * 通过审核
     *
     * @param body
     * @return
     */
    @POST("/es/verifySuccess")
    Call<CommonResult> verifySuccess(@Body Object body);

    /**
     * 未通过审核  拒绝通过审核
     *
     * @param body
     * @return
     */
    @POST("/es/verifyFail")
    Call<CommonResult> verifyFail(@Body Object body);


    /**
     * 获取热搜数据
     *
     * @return
     */
    @GET("/es/hotspotData")
    Call<CommonResult> hotspotData();

    /**
     * 发布悬赏
     *
     * @param body
     * @return
     */
    @POST("/es/publish_reword_topic")
    Call<CommonResult> publishRewordTopic(@Body Object body);

}
